Time-Series Data হল এমন ডেটা যা সময়ের সাথে পরিবর্তিত হয় এবং প্রতিটি ডেটা পয়েন্ট একটি নির্দিষ্ট সময়ের সাথে যুক্ত থাকে। Time-series data সাধারণত স্টক মার্কেট, সেন্সর ডেটা, ওয়েদার ডেটা ইত্যাদির মতো পরিস্থিতিতে ব্যবহৃত হয়। Q ভাষা (যা KDB+ এর জন্য ব্যবহৃত) টাইম-সিরিজ ডেটা বিশ্লেষণের জন্য অত্যন্ত শক্তিশালী এবং দ্রুত।
এখানে Time-Series Data Query এবং Aggregation Techniques নিয়ে বিস্তারিত আলোচনা করা হবে।
১. Time-Series Data Query (টাইম-সিরিজ ডেটা কুইরি)
Time-Series Query হল এমন কুইরি যা সময়ের সাথে সম্পর্কিত ডেটাকে বিশ্লেষণ করে, যেমন একটি নির্দিষ্ট সময়ের মধ্যে বা সময়ের ভিত্তিতে ডেটা নির্বাচন এবং প্রক্রিয়াকরণ। Q ভাষায় টাইম-সিরিজ ডেটা পরিচালনা করতে অনেক শক্তিশালী ফিচার রয়েছে।
Time-Series Data Query এর উদাহরণ:
ধরা যাক আমাদের একটি টেবিল আছে যার মধ্যে তারিখ (time) এবং প্রোডাক্টের দাম (price) স্টোর করা আছে:
t: 2024.11.16 2024.11.16 2024.11.17 2024.11.17 2024.11.18
price: 100 200 150 180 120
table: t priceএখানে, t কলামে তারিখ এবং price কলামে দাম রয়েছে।
Time-Range Query:
একটি নির্দিষ্ট সময়ের মধ্যে ডেটা ফিল্টার করতে পারেন, যেমন:
select from table where t within 2024.11.16 2024.11.17এখানে, within কিওয়ার্ডটি দিয়ে আমরা 2024.11.16 এবং 2024.11.17 এর মধ্যে থাকা ডেটা নির্বাচন করেছি।
Time-Based Aggregation (টাইম-ভিত্তিক অ্যাগ্রিগেশন):
টাইম-সিরিজ ডেটায় টাইম-বেসড অ্যাগ্রিগেশন (যেমন গড়, সর্বোচ্চ, সর্বনিম্ন) খুবই গুরুত্বপূর্ণ। Q ভাষায় আমরা একটি নির্দিষ্ট সময়ের জন্য অ্যাগ্রিগেশন করতে পারি।
select avg price by t from tableএখানে, avg price by t কুইরি প্রতি তারিখের জন্য গড় মূল্য বের করবে।
Time-Series Query with Specific Time Unit (নির্দিষ্ট সময় একক ব্যবহার করে কুইরি):
ধরা যাক আমরা প্রতি ঘণ্টার জন্য গড় মূল্য বের করতে চাই:
t: 2024.11.16 2024.11.16 2024.11.17 2024.11.17 2024.11.16 / সময়ের সাথে ডেটা
price: 100 200 150 180 120
table: t price
select avg price by hour t from tableএখানে, hour t দ্বারা সময়ের ঘণ্টা অনুযায়ী গ্রুপিং করা হয়েছে এবং তার ভিত্তিতে গড় মূল্য বের করা হয়েছে।
২. Aggregation Techniques (অ্যাগ্রিগেশন টেকনিক)
Aggregation হল একটি প্রক্রিয়া যার মাধ্যমে ডেটার উপর বিভিন্ন ধরনের গণনা (যেমন গড়, মোট, সর্বোচ্চ, সর্বনিম্ন ইত্যাদি) করা হয়। Time-Series ডেটা বিশ্লেষণের জন্য এটি একটি অত্যন্ত গুরুত্বপূর্ণ টেকনিক।
Common Aggregation Functions for Time-Series Data:
- Sum (
+/): সময়ের সাথে ডেটার যোগফল বের করা। - Average (
avg): সময়ের সাথে গড় মান বের করা। - Count (
count): সময়ের সাথে ডেটার সংখ্যা বের করা। - Maximum (
max): সর্বোচ্চ মান বের করা। - Minimum (
min): সর্বনিম্ন মান বের করা।
Aggregation Example (অ্যাগ্রিগেশন উদাহরণ):
Sum of prices (দামের যোগফল):
+/ priceএটি price কলামের সমস্ত মানের যোগফল দেবে।
Average Price (গড় দাম):
avg priceএটি price কলামের গড় মান বের করবে।
Maximum Price (সর্বোচ্চ দাম):
max priceএটি price কলামের মধ্যে সর্বোচ্চ মান বের করবে।
Minimum Price (সর্বনিম্ন দাম):
min priceএটি price কলামের মধ্যে সর্বনিম্ন মান বের করবে।
Grouping and Aggregation (গ্রুপিং এবং অ্যাগ্রিগেশন):
Time-Series ডেটা গ্রুপিং এবং অ্যাগ্রিগেশন একসাথে করা যায়। যেমন, যদি আপনি প্রতি দিন বা প্রতি সপ্তাহের গড় দাম বের করতে চান:
select avg price by t from tableএখানে, avg price by t কুইরি ডেটাকে তারিখ (t) অনুসারে গ্রুপ করে এবং প্রতিটি তারিখের জন্য গড় দাম বের করবে।
Time-Series Data Aggregation with Multiple Columns:
যদি আপনি একাধিক কলাম দিয়ে অ্যাগ্রিগেশন করতে চান:
select avg price, max price by t, product from tableএখানে, t (তারিখ) এবং product (প্রোডাক্ট) এর ভিত্তিতে গড় এবং সর্বোচ্চ দাম বের করা হচ্ছে।
৩. Rolling Aggregations (রোলিং অ্যাগ্রিগেশন)
Rolling Aggregation একটি শক্তিশালী টেকনিক, যা টাইম-সিরিজ ডেটার উপর একটি চলমান উইন্ডো ব্যবহার করে অ্যাগ্রিগেশন করে। এটি বিশেষভাবে ট্রেন্ড অ্যানালিসিস, মুভিং এভারেজ, বা অন্য কোনো চলমান পরিসংখ্যান বের করার জন্য ব্যবহার করা হয়।
Rolling Average Example (রোলিং গড়):
ধরা যাক, আমরা প্রতিটি ৩ দিনের জন্য গড় দাম বের করতে চাই:
price: 100 150 200 250 300 350
price 3 / আউটপুট: 150 200 250 300 350এখানে, 3 সংখ্যাটি উইন্ডো সাইজ এবং এটি ৩ দিনের চলমান গড় বের করে।
৪. Advanced Aggregation Techniques (এডভান্সড অ্যাগ্রিগেশন টেকনিক)
Q ভাষায় কিছু অগ্রসর অ্যাগ্রিগেশন টেকনিকও রয়েছে যা টাইম-সিরিজ ডেটা বিশ্লেষণে কাজে আসে:
- First/Last Value (প্রথম/শেষ মান): আপনি প্রথম বা শেষ মান বের করতে পারেন, যেমন প্রথম দাম, শেষ দাম ইত্যাদি।
first price / আউটপুট: 100
last price / আউটপুট: 350- Moving Sum/Moving Average: টাইম-সিরিজ ডেটার জন্য মুভিং এভারেজ বা মুভিং স্যাম বের করতে Q ভাষায় বিভিন্ন অপারেটর এবং ফাংশন ব্যবহার করা হয়।
সারসংক্ষেপ
- Time-Series Data Query: টাইম-সিরিজ ডেটা কুইরির মাধ্যমে ডেটা নির্বাচন করা, ফিল্টার করা এবং প্রক্রিয়া করা হয়।
within,avg,max,minইত্যাদি কিউয়ারি অপারেটর ব্যবহার করে সময়ের সাথে সম্পর্কিত ডেটা নির্বাচন এবং বিশ্লেষণ করা যায়। - Aggregation Techniques: টাইম-সিরিজ ডেটার উপর বিভিন্ন অ্যাগ্রিগেশন অপারেশন (যেমন গড়, যোগফল, সর্বোচ্চ, সর্বনিম্ন) করা হয়।
+/,avg,count,maxইত্যাদি অপারেটর দ্বারা ডেটার সংক্ষিপ্ত পরিসংখ্যান তৈরি করা সম্ভব। - Rolling Aggregation: চলমান উইন্ডো ব্যবহার করে টাইম-সিরিজ ডেটার গড় বা অন্যান্য পরিসংখ্যান বের করা হয়।
- Advanced Aggregation: টাইম-সিরিজ ডেটার জন্য বিভিন্ন অগ্রসর অ্যাগ্রিগেশন যেমন প্রথম/শেষ মান, মুভিং এভারেজ ব্যবহার করা হয়।
Q ভাষার শক্তিশালী টাইম-সিরিজ কুইরি এবং অ্যাগ্রিগেশন টেকনিকগুলি আপনাকে বড় এবং জটিল ডেটা সেটগুলির সাথে দ্রুত এবং কার্যকরভাবে কাজ করতে সহায়তা করে।
Read more